<%@page import="java.util.*"%>
<%@page import="com.cqgxy.javaweb.model.User"%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
    // 解决post请求方式下，表单参数中文乱码问题
    request.setCharacterEncoding("utf-8");
%>

<jsp:useBean id="user" class="com.cqgxy.javaweb.model.User" />
<jsp:setProperty name="user" property="*" /> <%--对于复选框这种具有多个值的数据，映射会部分成功 --%>

<%

    // 获取表单参数，用于后续计算或者存储
    String passwd1 = request.getParameter("passwd2");
	// request.getParameter("favor"); // 只能取一个值
	String[] favors = request.getParameterValues("favor"); // 参数值包含多个时，需要用getParameterValues取值
	user.setFavor(String.join(",", favors));

    // 注册的业务逻辑是什么？
    // 1、判断是否满足注册的要求：是否重名、密码是否一致
    String msg = "";
    if(!user.getPasswd().equals(passwd1)) {
    	msg="两次密码不一致！";
    	out.println(msg);
    	return;
    }
    
    // 从application对象中，取出已经注册成功的用户数据
    List<User> userList = (List)application.getAttribute("userList");
    if(userList == null) { // 首次注册的时候，application没有对象
    	userList = new ArrayList<>();
    }
    
    if(userList.contains(user)) {
    	msg="用户名被占用！";
    	out.println(msg);
    	return;
    }
    
    // 2、如果符合注册要求，这存储注册数据
    // application.setAttribute("username", username);
    // application.setAttribute("password", passwd);
    
    userList.add(user); // 现将当前用户数据存入List，再更新application中的list
    application.setAttribute("userList", userList);
    response.sendRedirect("register_success.jsp");
    // 3、否则提示错误信息
%>
